package com.example.demo.dao;

import java.io.Serializable;

public interface Dao<T> {
	/**
	 * 根据Id查询指定对象
	 * 
	 * @param id
	 *            对象Id
	 * @return 指定对象
	 */
	public T findById(Serializable id);

	/**
	 * 新增指定的数据对象记录
	 * 
	 * @param entity
	 *            要新增的对象
	 * @return 新增对象的主键值
	 */
	Serializable save(T entity);

	/**
	 * 批量新增指定数据对象集合
	 * 
	 * @param iterable
	 *            要新增的对象集合
	 */
	void save(Iterable<T> iterable);

	/**
	 * 批量新增指定数据对象集合
	 * 
	 * @param iterable
	 *            要新增的对象集合
	 * @param size
	 *            每次保存的记录数
	 */
	void save(Iterable<T> iterable, int size);

	/**
	 * 更新指定的数据对象记录
	 * 
	 * @param entity
	 *            更新对象
	 */
	void update(T entity);
	
	void update(Iterable<T> iterable, int size);
 
	/**
	 * 新增指定数据对象到数据库，若该对象
	 * 
	 * @param entity
	 */
	void saveOrUpdate(T entity);
	
	public void delete(T entity);
}
